package br.com.rafa3d.controle;

import java.io.Serializable;
import java.sql.SQLException;
import java.sql.SQLIntegrityConstraintViolationException;
import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
/*import org.primefaces.component.commandbutton.CommandButton;
import org.primefaces.component.inputtext.InputText;*/
import br.com.rafa3d.modelo.Cliente;
import br.com.rafa3d.negocio.CadastradorCliente;


@ManagedBean(name="clienteBean")
@RequestScoped
public class ClienteController implements Serializable {
	private static final long serialVersionUID = 1L;
	
	private Cliente cliente;
	//private InputText idCli;
	private CadastradorCliente cliDao;
	//private CommandButton reset;
	private List<Cliente> listCliente;
	
	public ClienteController(){
		setCliDao(new CadastradorCliente());
		cliente = new Cliente();
	}
	
	public void salvarCliente(){
		if(cliente.getFuncao() == null || cliente.getFuncao().isEmpty()){
			cliente.setFuncao("");
			cliente.setCodCarteira(0);
			cliente.setBairro("");
			cliente.setCelular("");
			cliente.setCidade("");
			cliente.setEstado("");
			cliente.setComp("");
		}else{
			cliente.setBairro("");
			cliente.setCelular("");
			cliente.setCidade("");
			cliente.setEstado("");
			cliente.setComp("");
		}
		cliDao.gravar(cliente);
		cliente = new Cliente();
	}
	
	public String cancelar(){
		return "index.xhtml?faces-redirect=true";
	}
	
	public void consultarCliente() {
		listCliente = new ArrayList<Cliente>();
		if ((cliente.getCod() > 0) && (listCliente.isEmpty())) {
			int id = cliente.getCod();
			Cliente cli = (Cliente) cliDao.buscarCod(id);
			listCliente.add(cli);
			System.out.println("passou-1");
		}else if (listCliente.isEmpty() && !cliente.getNome().isEmpty()) {
			listCliente = (List<Cliente>) cliDao.buscarNome(cliente.getNome().toString());
			System.out.println("passou-2");
		}else if (listCliente.isEmpty() && cliente.getNome().isEmpty() && cliente.getCod() == 0) {
			listCliente = (List<Cliente>) cliDao.listarTodos();
			System.out.println("passou-3");
		}
		cliente = new Cliente();		
	}
	
	public void deletaCliente(ActionEvent event){
		FacesContext context = FacesContext.getCurrentInstance();
		Cliente cli = (Cliente) cliDao.buscarCod(cliente.getCod());
		System.out.println(cli.getCod());

		if (cli.getCod() != 0) {
			cliDao.deletar(cliente.getCod());
			cli = (Cliente) cliDao.buscarCod(cliente.getCod());
			if (cli.getCod() == 0) {
				context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Deletado", "Cliente deletado com sucesso"));
			}
		}else{
			context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", "Cliente nao existe"));
		}
	}
	
	//Getters and Setterss
	public Cliente getCliente() {
		return cliente;
	}

	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}

	public CadastradorCliente getCliDao() {
		return cliDao;
	}

	public void setCliDao(CadastradorCliente cliDao) {
		this.cliDao = cliDao;
	}

	public List<Cliente> getListCliente() {
		return listCliente;
	}

	public void setListCliente(List<Cliente> listCliente) {
		this.listCliente = listCliente;
	}


}
